home *** CD-ROM | disk | FTP | other *** search
/ Apple WWDC 1996 / WWDC96_1996 (CD).toast / Technology Materials / MacOS 8 Resources / Developer Tools / Mac OS 8 Interfaces & Libraries / Interfaces / CIncludes / ImageCompression.h < prev    next >
C/C++ Source or Header  |  1996-05-01  |  37KB  |  832 lines

  1. /*
  2.      File:        ImageCompression.h
  3.  
  4.      Contains:    QuickTime Image Compression Interfaces.
  5.  
  6.      Version:    Technology:    QuickTime 2.1
  7.                  Release:    Universal Interfaces 3.0d3 on Copland DR1
  8.  
  9.      Copyright:    © 1984-1996 by Apple Computer, Inc.  All rights reserved.
  10.  
  11.      Bugs?:        If you find a problem with this file, send the file and version
  12.                  information (from above) and the problem description to:
  13.  
  14.                      Internet:    apple.bugs@applelink.apple.com
  15.                      AppleLink:    APPLE.BUGS
  16.  
  17. */
  18. #ifndef __IMAGECOMPRESSION__
  19. #define __IMAGECOMPRESSION__
  20.  
  21. #ifndef __TYPES__
  22. #include <Types.h>
  23. #endif
  24. #ifndef __QUICKDRAW__
  25. #include <Quickdraw.h>
  26. #endif
  27. #ifndef __QDOFFSCREEN__
  28. #include <QDOffscreen.h>
  29. #endif
  30. #ifndef __COMPONENTS__
  31. #include <Components.h>
  32. #endif
  33. #ifndef __WINDOWS__
  34. #include <Windows.h>
  35. #endif
  36. #ifndef __STANDARDFILE__
  37. #include <StandardFile.h>
  38. #endif
  39.  
  40. #ifdef __cplusplus
  41. extern "C" {
  42. #endif
  43.  
  44. #if PRAGMA_IMPORT_SUPPORTED
  45. #pragma import on
  46. #endif
  47.  
  48. #if PRAGMA_ALIGN_SUPPORTED
  49. #pragma options align=mac68k
  50. #endif
  51.  
  52. #if FOR_SYSTEM7_AND_SYSTEM8_COOPERATIVE
  53. struct MatrixRecord {
  54.     Fixed                             matrix[3][3];
  55. };
  56. typedef struct MatrixRecord MatrixRecord;
  57.  
  58. typedef MatrixRecord *MatrixRecordPtr;
  59. struct FixedPoint {
  60.     Fixed                             x;
  61.     Fixed                             y;
  62. };
  63. typedef struct FixedPoint FixedPoint;
  64.  
  65. struct FixedRect {
  66.     Fixed                             left;
  67.     Fixed                             top;
  68.     Fixed                             right;
  69.     Fixed                             bottom;
  70. };
  71. typedef struct FixedRect FixedRect;
  72.  
  73. /* These are the bits that are set in the Component flags, and also in the codecInfo struct. */
  74.  
  75. enum {
  76.     codecInfoDoes1                = (1L << 0),
  77.     codecInfoDoes2                = (1L << 1),
  78.     codecInfoDoes4                = (1L << 2),
  79.     codecInfoDoes8                = (1L << 3),
  80.     codecInfoDoes16                = (1L << 4),
  81.     codecInfoDoes32                = (1L << 5),
  82.     codecInfoDoesDither            = (1L << 6),
  83.     codecInfoDoesStretch        = (1L << 7),
  84.     codecInfoDoesShrink            = (1L << 8),
  85.     codecInfoDoesMask            = (1L << 9),
  86.     codecInfoDoesTemporal        = (1L << 10),
  87.     codecInfoDoesDouble            = (1L << 11),
  88.     codecInfoDoesQuad            = (1L << 12),
  89.     codecInfoDoesHalf            = (1L << 13),
  90.     codecInfoDoesQuarter        = (1L << 14),
  91.     codecInfoDoesRotate            = (1L << 15),
  92.     codecInfoDoesHorizFlip        = (1L << 16),
  93.     codecInfoDoesVertFlip        = (1L << 17),
  94.     codecInfoDoesSkew            = (1L << 18),
  95.     codecInfoDoesBlend            = (1L << 19),
  96.     codecInfoDoesWarp            = (1L << 20),
  97.     codecInfoDoesRecompress        = (1L << 21),
  98.     codecInfoDoesSpool            = (1L << 22),
  99.     codecInfoDoesRateConstrain    = (1L << 23)
  100. };
  101.  
  102.  
  103. enum {
  104.     codecInfoDepth1                = (1L << 0),
  105.     codecInfoDepth2                = (1L << 1),
  106.     codecInfoDepth4                = (1L << 2),
  107.     codecInfoDepth8                = (1L << 3),
  108.     codecInfoDepth16            = (1L << 4),
  109.     codecInfoDepth32            = (1L << 5),
  110.     codecInfoDepth24            = (1L << 6),
  111.     codecInfoDepth33            = (1L << 7),
  112.     codecInfoDepth34            = (1L << 8),
  113.     codecInfoDepth36            = (1L << 9),
  114.     codecInfoDepth40            = (1L << 10),
  115.     codecInfoStoresClut            = (1L << 11),
  116.     codecInfoDoesLossless        = (1L << 12),
  117.     codecInfoSequenceSensitive    = (1L << 13)
  118. };
  119.  
  120.  
  121. enum {
  122.     codecFlagUseImageBuffer        = (1L << 0),
  123.     codecFlagUseScreenBuffer    = (1L << 1),
  124.     codecFlagUpdatePrevious        = (1L << 2),
  125.     codecFlagNoScreenUpdate        = (1L << 3),
  126.     codecFlagWasCompressed        = (1L << 4),
  127.     codecFlagDontOffscreen        = (1L << 5),
  128.     codecFlagUpdatePreviousComp    = (1L << 6),
  129.     codecFlagForceKeyFrame        = (1L << 7),
  130.     codecFlagOnlyScreenUpdate    = (1L << 8),
  131.     codecFlagLiveGrab            = (1L << 9),
  132.     codecFlagDontUseNewImageBuffer = (1L << 10),
  133.     codecFlagInterlaceUpdate    = (1L << 11),
  134.     codecFlagCatchUpDiff        = (1L << 12),
  135.     codecFlagUsedNewImageBuffer    = (1L << 14),
  136.     codecFlagUsedImageBuffer    = (1L << 15)
  137. };
  138.  
  139.  
  140. enum {
  141.                                                                 /* The minimum data size for spooling in or out data */
  142.     codecMinimumDataSize        = 32768L
  143. };
  144.  
  145.  
  146. enum {
  147.     compressorComponentType        = 'imco',                        /* the type for "Components" which compress images */
  148.     decompressorComponentType    = 'imdc'                        /* the type for "Components" which decompress images */
  149. };
  150.  
  151. typedef Component CompressorComponent;
  152. typedef Component DecompressorComponent;
  153. typedef Component CodecComponent;
  154. #define    anyCodec                ((CodecComponent)0)
  155. #define    bestSpeedCodec            ((CodecComponent)-1)
  156. #define    bestFidelityCodec        ((CodecComponent)-2)
  157. #define    bestCompressionCodec    ((CodecComponent)-3)
  158. typedef long CodecType;
  159. typedef unsigned short CodecFlags;
  160. typedef unsigned long CodecQ;
  161.  
  162. enum {
  163.     codecLosslessQuality        = 0x00000400,
  164.     codecMaxQuality                = 0x000003FF,
  165.     codecMinQuality                = 0x00000000,
  166.     codecLowQuality                = 0x00000100,
  167.     codecNormalQuality            = 0x00000200,
  168.     codecHighQuality            = 0x00000300
  169. };
  170.  
  171.  
  172. enum {
  173.     codecCompletionSource        = (1 << 0),                        /* asynchronous codec is done with source data */
  174.     codecCompletionDest            = (1 << 1),                        /* asynchronous codec is done with destination data */
  175.     codecCompletionDontUnshield    = (1 << 2)                        /* on dest complete don't unshield cursor */
  176. };
  177.  
  178.  
  179. enum {
  180.     codecProgressOpen            = 0,
  181.     codecProgressUpdatePercent    = 1,
  182.     codecProgressClose            = 2
  183. };
  184.  
  185. typedef pascal OSErr (*ICMDataProcPtr)(Ptr *dataP, long bytesNeeded, long refcon);
  186. typedef pascal OSErr (*ICMFlushProcPtr)(Ptr data, long bytesAdded, long refcon);
  187. typedef pascal void (*ICMCompletionProcPtr)(OSErr result, short flags, long refcon);
  188. typedef pascal OSErr (*ICMProgressProcPtr)(short message, Fixed completeness, long refcon);
  189. typedef pascal void (*StdPixProcPtr)(PixMap *src, Rect *srcRect, MatrixRecord *matrix, short mode, RgnHandle mask, PixMap *matte, Rect *matteRect, short flags);
  190. typedef pascal void (*ICMAlignmentProcPtr)(Rect *rp, long refcon);
  191. typedef pascal void (*ICMMemoryDisposedProcPtr)(Ptr memoryBlock, void *refcon);
  192.  
  193. #if GENERATINGCFM
  194. typedef UniversalProcPtr ICMDataUPP;
  195. typedef UniversalProcPtr ICMFlushUPP;
  196. typedef UniversalProcPtr ICMCompletionUPP;
  197. typedef UniversalProcPtr ICMProgressUPP;
  198. typedef UniversalProcPtr StdPixUPP;
  199. typedef UniversalProcPtr ICMAlignmentUPP;
  200. typedef UniversalProcPtr ICMMemoryDisposedUPP;
  201. #else
  202. typedef ICMDataProcPtr ICMDataUPP;
  203. typedef ICMFlushProcPtr ICMFlushUPP;
  204. typedef ICMCompletionProcPtr ICMCompletionUPP;
  205. typedef ICMProgressProcPtr ICMProgressUPP;
  206. typedef StdPixProcPtr StdPixUPP;
  207. typedef ICMAlignmentProcPtr ICMAlignmentUPP;
  208. typedef ICMMemoryDisposedProcPtr ICMMemoryDisposedUPP;
  209. #endif
  210. typedef long ImageSequence;
  211. typedef long ImageSequenceDataSource;
  212. struct ICMProgressProcRecord {
  213.     ICMProgressUPP                     progressProc;
  214.     long                             progressRefCon;
  215. };
  216. typedef struct ICMProgressProcRecord ICMProgressProcRecord;
  217.  
  218. typedef ICMProgressProcRecord *ICMProgressProcRecordPtr;
  219. struct ICMCompletionProcRecord {
  220.     ICMCompletionUPP                 completionProc;
  221.     long                             completionRefCon;
  222. };
  223. typedef struct ICMCompletionProcRecord ICMCompletionProcRecord;
  224.  
  225. typedef ICMCompletionProcRecord *ICMCompletionProcRecordPtr;
  226. struct ICMDataProcRecord {
  227.     ICMDataUPP                         dataProc;
  228.     long                             dataRefCon;
  229. };
  230. typedef struct ICMDataProcRecord ICMDataProcRecord;
  231.  
  232. typedef ICMDataProcRecord *ICMDataProcRecordPtr;
  233. struct ICMFlushProcRecord {
  234.     ICMFlushUPP                     flushProc;
  235.     long                             flushRefCon;
  236. };
  237. typedef struct ICMFlushProcRecord ICMFlushProcRecord;
  238.  
  239. typedef ICMFlushProcRecord *ICMFlushProcRecordPtr;
  240. struct ICMAlignmentProcRecord {
  241.     ICMAlignmentUPP                 alignmentProc;
  242.     long                             alignmentRefCon;
  243. };
  244. typedef struct ICMAlignmentProcRecord ICMAlignmentProcRecord;
  245.  
  246. typedef ICMAlignmentProcRecord *ICMAlignmentProcRecordPtr;
  247. struct DataRateParams {
  248.     long                             dataRate;
  249.     long                             dataOverrun;
  250.     long                             frameDuration;
  251.     long                             keyFrameRate;
  252.     CodecQ                             minSpatialQuality;
  253.     CodecQ                             minTemporalQuality;
  254. };
  255. typedef struct DataRateParams DataRateParams;
  256.  
  257. typedef DataRateParams *DataRateParamsPtr;
  258. struct ImageDescription {
  259.     long                             idSize;                        /* total size of ImageDescription including extra data ( CLUTs and other per sequence data */
  260.     CodecType                         cType;                        /* what kind of codec compressed this data */
  261.     long                             resvd1;                        /* reserved for Apple use */
  262.     short                             resvd2;                        /* reserved for Apple use */
  263.     short                             dataRefIndex;                /* set to zero  */
  264.     short                             version;                    /* which version is this data */
  265.     short                             revisionLevel;                /* what version of that codec did this */
  266.     long                             vendor;                        /* whose  codec compressed this data */
  267.     CodecQ                             temporalQuality;            /* what was the temporal quality factor  */
  268.     CodecQ                             spatialQuality;                /* what was the spatial quality factor */
  269.     short                             width;                        /* how many pixels wide is this data */
  270.     short                             height;                        /* how many pixels high is this data */
  271.     Fixed                             hRes;                        /* horizontal resolution */
  272.     Fixed                             vRes;                        /* vertical resolution */
  273.     long                             dataSize;                    /* if known, the size of data for this image descriptor */
  274.     short                             frameCount;                    /* number of frames this description applies to */
  275.     Str31                             name;                        /* name of codec ( in case not installed )  */
  276.     short                             depth;                        /* what depth is this data (1-32) or ( 33-40 grayscale ) */
  277.     short                             clutID;                        /* clut id or if 0 clut follows  or -1 if no clut */
  278. };
  279. typedef struct ImageDescription ImageDescription;
  280.  
  281. typedef ImageDescription *ImageDescriptionPtr;
  282. typedef ImageDescriptionPtr *ImageDescriptionHandle;
  283. struct CodecInfo {
  284.     Str31                             typeName;                    /* name of the codec type i.e.: 'Apple Image Compression' */
  285.     short                             version;                    /* version of the codec data that this codec knows about */
  286.     short                             revisionLevel;                /* revision level of this codec i.e: 0x00010001 (1.0.1) */
  287.     long                             vendor;                        /* Maker of this codec i.e: 'appl' */
  288.     long                             decompressFlags;            /* codecInfo flags for decompression capabilities */
  289.     long                             compressFlags;                /* codecInfo flags for compression capabilities */
  290.     long                             formatFlags;                /* codecInfo flags for compression format details */
  291.     UInt8                             compressionAccuracy;        /* measure (1-255) of accuracy of this codec for compress (0 if unknown) */
  292.     UInt8                             decompressionAccuracy;        /* measure (1-255) of accuracy of this codec for decompress (0 if unknown) */
  293.     unsigned short                     compressionSpeed;            /* ( millisecs for compressing 320x240 on base mac II) (0 if unknown)  */
  294.     unsigned short                     decompressionSpeed;            /* ( millisecs for decompressing 320x240 on mac II)(0 if unknown)  */
  295.     UInt8                             compressionLevel;            /* measure (1-255) of compression level of this codec (0 if unknown)  */
  296.     UInt8                             resvd;                        /* pad */
  297.     short                             minimumHeight;                /* minimum height of image (block size) */
  298.     short                             minimumWidth;                /* minimum width of image (block size) */
  299.     short                             decompressPipelineLatency;    /* in milliseconds ( for asynchronous codecs ) */
  300.     short                             compressPipelineLatency;    /* in milliseconds ( for asynchronous codecs ) */
  301.     long                             privateData;
  302. };
  303. typedef struct CodecInfo CodecInfo;
  304.  
  305. struct CodecNameSpec {
  306.     CodecComponent                     codec;
  307.     CodecType                         cType;
  308.     Str31                             typeName;
  309.     Handle                             name;
  310. };
  311. typedef struct CodecNameSpec CodecNameSpec;
  312.  
  313. struct CodecNameSpecList {
  314.     short                             count;
  315.     CodecNameSpec                     list[1];
  316. };
  317. typedef struct CodecNameSpecList CodecNameSpecList;
  318.  
  319. typedef CodecNameSpecList *CodecNameSpecListPtr;
  320.  
  321. enum {
  322.     defaultDither                = 0,
  323.     forceDither                    = 1,
  324.     suppressDither                = 2,
  325.     useColorMatching            = 4
  326. };
  327.  
  328. struct ICMFrameTimeRecord {
  329.     wide                             value;                        /* frame time*/
  330.     long                             scale;                        /* timescale of value/duration fields*/
  331.     void *                            base;                        /* timebase*/
  332.  
  333.     long                             duration;                    /* duration frame is to be displayed (0 if unknown)*/
  334.     Fixed                             rate;                        /* rate of timebase relative to wall-time*/
  335. };
  336. typedef struct ICMFrameTimeRecord ICMFrameTimeRecord;
  337.  
  338. typedef ICMFrameTimeRecord *ICMFrameTimePtr;
  339.  
  340. #if GENERATINGCFM
  341. #else
  342. #endif
  343.  
  344. enum {
  345.     uppICMDataProcInfo = kPascalStackBased
  346.          | RESULT_SIZE(SIZE_CODE(sizeof(OSErr)))
  347.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(Ptr *)))
  348.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long)))
  349.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(long))),
  350.     uppICMFlushProcInfo = kPascalStackBased
  351.          | RESULT_SIZE(SIZE_CODE(sizeof(OSErr)))
  352.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(Ptr)))
  353.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long)))
  354.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(long))),
  355.     uppICMCompletionProcInfo = kPascalStackBased
  356.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(OSErr)))
  357.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(short)))
  358.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(long))),
  359.     uppICMProgressProcInfo = kPascalStackBased
  360.          | RESULT_SIZE(SIZE_CODE(sizeof(OSErr)))
  361.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(short)))
  362.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(Fixed)))
  363.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(long))),
  364.     uppStdPixProcInfo = kPascalStackBased
  365.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(PixMap *)))
  366.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(Rect *)))
  367.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(MatrixRecord *)))
  368.          | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(short)))
  369.          | STACK_ROUTINE_PARAMETER(5, SIZE_CODE(sizeof(RgnHandle)))
  370.          | STACK_ROUTINE_PARAMETER(6, SIZE_CODE(sizeof(PixMap *)))
  371.          | STACK_ROUTINE_PARAMETER(7, SIZE_CODE(sizeof(Rect *)))
  372.          | STACK_ROUTINE_PARAMETER(8, SIZE_CODE(sizeof(short))),
  373.     uppICMAlignmentProcInfo = kPascalStackBased
  374.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(Rect *)))
  375.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long))),
  376.     uppICMMemoryDisposedProcInfo = kPascalStackBased
  377.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(Ptr)))
  378.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(void *)))
  379. };
  380.  
  381. #if GENERATINGCFM
  382. #define NewICMDataProc(userRoutine)        \
  383.         (ICMDataUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppICMDataProcInfo, GetCurrentArchitecture())
  384. #define NewICMFlushProc(userRoutine)        \
  385.         (ICMFlushUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppICMFlushProcInfo, GetCurrentArchitecture())
  386. #define NewICMCompletionProc(userRoutine)        \
  387.         (ICMCompletionUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppICMCompletionProcInfo, GetCurrentArchitecture())
  388. #define NewICMProgressProc(userRoutine)        \
  389.         (ICMProgressUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppICMProgressProcInfo, GetCurrentArchitecture())
  390. #define NewStdPixProc(userRoutine)        \
  391.         (StdPixUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppStdPixProcInfo, GetCurrentArchitecture())
  392. #define NewICMAlignmentProc(userRoutine)        \
  393.         (ICMAlignmentUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppICMAlignmentProcInfo, GetCurrentArchitecture())
  394. #define NewICMMemoryDisposedProc(userRoutine)        \
  395.         (ICMMemoryDisposedUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppICMMemoryDisposedProcInfo, GetCurrentArchitecture())
  396. #else
  397. #define NewICMDataProc(userRoutine)        \
  398.         ((ICMDataUPP) (userRoutine))
  399. #define NewICMFlushProc(userRoutine)        \
  400.         ((ICMFlushUPP) (userRoutine))
  401. #define NewICMCompletionProc(userRoutine)        \
  402.         ((ICMCompletionUPP) (userRoutine))
  403. #define NewICMProgressProc(userRoutine)        \
  404.         ((ICMProgressUPP) (userRoutine))
  405. #define NewStdPixProc(userRoutine)        \
  406.         ((StdPixUPP) (userRoutine))
  407. #define NewICMAlignmentProc(userRoutine)        \
  408.         ((ICMAlignmentUPP) (userRoutine))
  409. #define NewICMMemoryDisposedProc(userRoutine)        \
  410.         ((ICMMemoryDisposedUPP) (userRoutine))
  411. #endif
  412.  
  413. #if GENERATINGCFM
  414. #define CallICMDataProc(userRoutine, dataP, bytesNeeded, refcon)        \
  415.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppICMDataProcInfo, (dataP), (bytesNeeded), (refcon))
  416. #define CallICMFlushProc(userRoutine, data, bytesAdded, refcon)        \
  417.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppICMFlushProcInfo, (data), (bytesAdded), (refcon))
  418. #define CallICMCompletionProc(userRoutine, result, flags, refcon)        \
  419.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppICMCompletionProcInfo, (result), (flags), (refcon))
  420. #define CallICMProgressProc(userRoutine, message, completeness, refcon)        \
  421.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppICMProgressProcInfo, (message), (completeness), (refcon))
  422. #define CallStdPixProc(userRoutine, src, srcRect, matrix, mode, mask, matte, matteRect, flags)        \
  423.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppStdPixProcInfo, (src), (srcRect), (matrix), (mode), (mask), (matte), (matteRect), (flags))
  424. #define CallICMAlignmentProc(userRoutine, rp, refcon)        \
  425.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppICMAlignmentProcInfo, (rp), (refcon))
  426. #define CallICMMemoryDisposedProc(userRoutine, memoryBlock, refcon)        \
  427.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppICMMemoryDisposedProcInfo, (memoryBlock), (refcon))
  428. #else
  429. #define CallICMDataProc(userRoutine, dataP, bytesNeeded, refcon)        \
  430.         (*(userRoutine))((dataP), (bytesNeeded), (refcon))
  431. #define CallICMFlushProc(userRoutine, data, bytesAdded, refcon)        \
  432.         (*(userRoutine))((data), (bytesAdded), (refcon))
  433. #define CallICMCompletionProc(userRoutine, result, flags, refcon)        \
  434.         (*(userRoutine))((result), (flags), (refcon))
  435. #define CallICMProgressProc(userRoutine, message, completeness, refcon)        \
  436.         (*(userRoutine))((message), (completeness), (refcon))
  437. #define CallStdPixProc(userRoutine, src, srcRect, matrix, mode, mask, matte, matteRect, flags)        \
  438.         (*(userRoutine))((src), (srcRect), (matrix), (mode), (mask), (matte), (matteRect), (flags))
  439. #define CallICMAlignmentProc(userRoutine, rp, refcon)        \
  440.         (*(userRoutine))((rp), (refcon))
  441. #define CallICMMemoryDisposedProc(userRoutine, memoryBlock, refcon)        \
  442.         (*(userRoutine))((memoryBlock), (refcon))
  443. #endif
  444. extern pascal OSErr CodecManagerVersion(long *version)
  445.  TWOWORDINLINE(0x7000, 0xAAA3);
  446.  
  447. extern pascal OSErr GetCodecNameList(CodecNameSpecListPtr *list, short showAll)
  448.  TWOWORDINLINE(0x7001, 0xAAA3);
  449.  
  450. extern pascal OSErr DisposeCodecNameList(CodecNameSpecListPtr list)
  451.  TWOWORDINLINE(0x700F, 0xAAA3);
  452.  
  453. extern pascal OSErr GetCodecInfo(CodecInfo *info, CodecType cType, CodecComponent codec)
  454.  TWOWORDINLINE(0x7003, 0xAAA3);
  455.  
  456. extern pascal OSErr GetMaxCompressionSize(PixMapHandle src, const Rect *srcRect, short colorDepth, CodecQ quality, CodecType cType, CompressorComponent codec, long *size)
  457.  TWOWORDINLINE(0x7004, 0xAAA3);
  458.  
  459. extern pascal OSErr GetCompressionTime(PixMapHandle src, const Rect *srcRect, short colorDepth, CodecType cType, CompressorComponent codec, CodecQ *spatialQuality, CodecQ *temporalQuality, unsigned long *compressTime)
  460.  TWOWORDINLINE(0x7005, 0xAAA3);
  461.  
  462. extern pascal OSErr CompressImage(PixMapHandle src, const Rect *srcRect, CodecQ quality, CodecType cType, ImageDescriptionHandle desc, Ptr data)
  463.  TWOWORDINLINE(0x7006, 0xAAA3);
  464.  
  465. extern pascal OSErr FCompressImage(PixMapHandle src, const Rect *srcRect, short colorDepth, CodecQ quality, CodecType cType, CompressorComponent codec, CTabHandle clut, CodecFlags flags, long bufferSize, ICMFlushProcRecordPtr flushProc, ICMProgressProcRecordPtr progressProc, ImageDescriptionHandle desc, Ptr data)
  466.  TWOWORDINLINE(0x7007, 0xAAA3);
  467.  
  468. extern pascal OSErr DecompressImage(Ptr data, ImageDescriptionHandle desc, PixMapHandle dst, const Rect *srcRect, const Rect *dstRect, short mode, RgnHandle mask)
  469.  TWOWORDINLINE(0x7008, 0xAAA3);
  470.  
  471. extern pascal OSErr FDecompressImage(Ptr data, ImageDescriptionHandle desc, PixMapHandle dst, const Rect *srcRect, MatrixRecordPtr matrix, short mode, RgnHandle mask, PixMapHandle matte, const Rect *matteRect, CodecQ accuracy, DecompressorComponent codec, long bufferSize, ICMDataProcRecordPtr dataProc, ICMProgressProcRecordPtr progressProc)
  472.  TWOWORDINLINE(0x7009, 0xAAA3);
  473.  
  474. extern pascal OSErr CompressSequenceBegin(ImageSequence *seqID, PixMapHandle src, PixMapHandle prev, const Rect *srcRect, const Rect *prevRect, short colorDepth, CodecType cType, CompressorComponent codec, CodecQ spatialQuality, CodecQ temporalQuality, long keyFrameRate, CTabHandle clut, CodecFlags flags, ImageDescriptionHandle desc)
  475.  TWOWORDINLINE(0x700A, 0xAAA3);
  476.  
  477. extern pascal OSErr CompressSequenceFrame(ImageSequence seqID, PixMapHandle src, const Rect *srcRect, CodecFlags flags, Ptr data, long *dataSize, UInt8 *similarity, ICMCompletionProcRecordPtr asyncCompletionProc)
  478.  TWOWORDINLINE(0x700B, 0xAAA3);
  479.  
  480. extern pascal OSErr DecompressSequenceBegin(ImageSequence *seqID, ImageDescriptionHandle desc, CGrafPtr port, GDHandle gdh, const Rect *srcRect, MatrixRecordPtr matrix, short mode, RgnHandle mask, CodecFlags flags, CodecQ accuracy, DecompressorComponent codec)
  481.  TWOWORDINLINE(0x700D, 0xAAA3);
  482.  
  483. extern pascal OSErr DecompressSequenceBeginS(ImageSequence *seqID, ImageDescriptionHandle desc, Ptr data, long dataSize, CGrafPtr port, GDHandle gdh, const Rect *srcRect, MatrixRecordPtr matrix, short mode, RgnHandle mask, CodecFlags flags, CodecQ accuracy, DecompressorComponent codec)
  484.  FOURWORDINLINE(0x203C, 0x0030, 0x005D, 0xAAA3);
  485.  
  486. extern pascal OSErr DecompressSequenceFrame(ImageSequence seqID, Ptr data, CodecFlags inFlags, CodecFlags *outFlags, ICMCompletionProcRecordPtr asyncCompletionProc)
  487.  TWOWORDINLINE(0x700E, 0xAAA3);
  488.  
  489. extern pascal OSErr DecompressSequenceFrameS(ImageSequence seqID, Ptr data, long dataSize, CodecFlags inFlags, CodecFlags *outFlags, ICMCompletionProcRecordPtr asyncCompletionProc)
  490.  FOURWORDINLINE(0x203C, 0x0016, 0x0047, 0xAAA3);
  491.  
  492. extern pascal OSErr DecompressSequenceFrameWhen(ImageSequence seqID, Ptr data, long dataSize, CodecFlags inFlags, CodecFlags *outFlags, ICMCompletionProcRecordPtr asyncCompletionProc, const ICMFrameTimeRecord *frameTime)
  493.  FOURWORDINLINE(0x203C, 0x001A, 0x005E, 0xAAA3);
  494.  
  495. extern pascal OSErr CDSequenceFlush(ImageSequence seqID)
  496.  FOURWORDINLINE(0x203C, 0x0004, 0x005F, 0xAAA3);
  497.  
  498. extern pascal OSErr SetDSequenceMatrix(ImageSequence seqID, MatrixRecordPtr matrix)
  499.  TWOWORDINLINE(0x7010, 0xAAA3);
  500.  
  501. extern pascal OSErr SetDSequenceMatte(ImageSequence seqID, PixMapHandle matte, const Rect *matteRect)
  502.  TWOWORDINLINE(0x7011, 0xAAA3);
  503.  
  504. extern pascal OSErr SetDSequenceMask(ImageSequence seqID, RgnHandle mask)
  505.  TWOWORDINLINE(0x7012, 0xAAA3);
  506.  
  507. extern pascal OSErr SetDSequenceTransferMode(ImageSequence seqID, short mode, const RGBColor *opColor)
  508.  TWOWORDINLINE(0x7013, 0xAAA3);
  509.  
  510. extern pascal OSErr SetDSequenceDataProc(ImageSequence seqID, ICMDataProcRecordPtr dataProc, long bufferSize)
  511.  TWOWORDINLINE(0x7014, 0xAAA3);
  512.  
  513. extern pascal OSErr SetDSequenceAccuracy(ImageSequence seqID, CodecQ accuracy)
  514.  TWOWORDINLINE(0x7034, 0xAAA3);
  515.  
  516. extern pascal OSErr SetDSequenceSrcRect(ImageSequence seqID, const Rect *srcRect)
  517.  TWOWORDINLINE(0x7035, 0xAAA3);
  518.  
  519. extern pascal OSErr GetDSequenceImageBuffer(ImageSequence seqID, GWorldPtr *gworld)
  520.  TWOWORDINLINE(0x7015, 0xAAA3);
  521.  
  522. extern pascal OSErr GetDSequenceScreenBuffer(ImageSequence seqID, GWorldPtr *gworld)
  523.  TWOWORDINLINE(0x7016, 0xAAA3);
  524.  
  525. extern pascal OSErr SetCSequenceQuality(ImageSequence seqID, CodecQ spatialQuality, CodecQ temporalQuality)
  526.  TWOWORDINLINE(0x7017, 0xAAA3);
  527.  
  528. extern pascal OSErr SetCSequencePrev(ImageSequence seqID, PixMapHandle prev, const Rect *prevRect)
  529.  TWOWORDINLINE(0x7018, 0xAAA3);
  530.  
  531. extern pascal OSErr SetCSequenceFlushProc(ImageSequence seqID, ICMFlushProcRecordPtr flushProc, long bufferSize)
  532.  TWOWORDINLINE(0x7033, 0xAAA3);
  533.  
  534. extern pascal OSErr SetCSequenceKeyFrameRate(ImageSequence seqID, long keyframerate)
  535.  TWOWORDINLINE(0x7036, 0xAAA3);
  536.  
  537. extern pascal OSErr GetCSequenceKeyFrameRate(ImageSequence seqID, long *keyframerate)
  538.  FOURWORDINLINE(0x203C, 0x0008, 0x004B, 0xAAA3);
  539.  
  540. extern pascal OSErr GetCSequencePrevBuffer(ImageSequence seqID, GWorldPtr *gworld)
  541.  TWOWORDINLINE(0x7019, 0xAAA3);
  542.  
  543. extern pascal OSErr CDSequenceBusy(ImageSequence seqID)
  544.  TWOWORDINLINE(0x701A, 0xAAA3);
  545.  
  546. extern pascal OSErr CDSequenceEnd(ImageSequence seqID)
  547.  TWOWORDINLINE(0x701B, 0xAAA3);
  548.  
  549. extern pascal OSErr CDSequenceEquivalentImageDescription(ImageSequence seqID, ImageDescriptionHandle newDesc, Boolean *equivalent)
  550.  FOURWORDINLINE(0x203C, 0x000C, 0x0065, 0xAAA3);
  551.  
  552. extern pascal OSErr GetCompressedImageSize(ImageDescriptionHandle desc, Ptr data, long bufferSize, ICMDataProcRecordPtr dataProc, long *dataSize)
  553.  TWOWORDINLINE(0x701C, 0xAAA3);
  554.  
  555. extern pascal OSErr GetSimilarity(PixMapHandle src, const Rect *srcRect, ImageDescriptionHandle desc, Ptr data, Fixed *similarity)
  556.  TWOWORDINLINE(0x701D, 0xAAA3);
  557.  
  558. extern pascal OSErr GetImageDescriptionCTable(ImageDescriptionHandle desc, CTabHandle *ctable)
  559.  TWOWORDINLINE(0x701E, 0xAAA3);
  560.  
  561. extern pascal OSErr SetImageDescriptionCTable(ImageDescriptionHandle desc, CTabHandle ctable)
  562.  TWOWORDINLINE(0x701F, 0xAAA3);
  563.  
  564. extern pascal OSErr GetImageDescriptionExtension(ImageDescriptionHandle desc, Handle *extension, long idType, long index)
  565.  TWOWORDINLINE(0x7020, 0xAAA3);
  566.  
  567. extern pascal OSErr AddImageDescriptionExtension(ImageDescriptionHandle desc, Handle extension, long idType)
  568.  TWOWORDINLINE(0x7021, 0xAAA3);
  569.  
  570. #if GENERATINGPPCLIB
  571. extern pascal OSErr SetImageDescriptionExtension(ImageDescriptionHandle desc, Handle extension, long idType)
  572.  TWOWORDINLINE(0x7021, 0xAAA3);
  573.  
  574. #endif
  575. extern pascal OSErr RemoveImageDescriptionExtension(ImageDescription **desc, long idType, long index)
  576.  FOURWORDINLINE(0x203C, 0x000C, 0x003A, 0xAAA3);
  577.  
  578. extern pascal OSErr CountImageDescriptionExtensionType(ImageDescription **desc, long idType, long *count)
  579.  FOURWORDINLINE(0x203C, 0x000C, 0x003B, 0xAAA3);
  580.  
  581. extern pascal OSErr GetNextImageDescriptionExtensionType(ImageDescription **desc, long *idType)
  582.  FOURWORDINLINE(0x203C, 0x0008, 0x003C, 0xAAA3);
  583.  
  584. extern pascal OSErr FindCodec(CodecType cType, CodecComponent specCodec, CompressorComponent *compressor, DecompressorComponent *decompressor)
  585.  TWOWORDINLINE(0x7023, 0xAAA3);
  586.  
  587. extern pascal OSErr CompressPicture(PicHandle srcPicture, PicHandle dstPicture, CodecQ quality, CodecType cType)
  588.  TWOWORDINLINE(0x7024, 0xAAA3);
  589.  
  590. extern pascal OSErr FCompressPicture(PicHandle srcPicture, PicHandle dstPicture, short colorDepth, CTabHandle clut, CodecQ quality, short doDither, short compressAgain, ICMProgressProcRecordPtr progressProc, CodecType cType, CompressorComponent codec)
  591.  TWOWORDINLINE(0x7025, 0xAAA3);
  592.  
  593. extern pascal OSErr CompressPictureFile(short srcRefNum, short dstRefNum, CodecQ quality, CodecType cType)
  594.  TWOWORDINLINE(0x7026, 0xAAA3);
  595.  
  596. extern pascal OSErr FCompressPictureFile(short srcRefNum, short dstRefNum, short colorDepth, CTabHandle clut, CodecQ quality, short doDither, short compressAgain, ICMProgressProcRecordPtr progressProc, CodecType cType, CompressorComponent codec)
  597.  TWOWORDINLINE(0x7027, 0xAAA3);
  598.  
  599. extern pascal OSErr GetPictureFileHeader(short refNum, Rect *frame, OpenCPicParams *header)
  600.  TWOWORDINLINE(0x7028, 0xAAA3);
  601.  
  602. extern pascal OSErr DrawPictureFile(short refNum, const Rect *frame, ICMProgressProcRecordPtr progressProc)
  603.  TWOWORDINLINE(0x7029, 0xAAA3);
  604.  
  605. extern pascal OSErr DrawTrimmedPicture(PicHandle srcPicture, const Rect *frame, RgnHandle trimMask, short doDither, ICMProgressProcRecordPtr progressProc)
  606.  TWOWORDINLINE(0x702E, 0xAAA3);
  607.  
  608. extern pascal OSErr DrawTrimmedPictureFile(short srcRefnum, const Rect *frame, RgnHandle trimMask, short doDither, ICMProgressProcRecordPtr progressProc)
  609.  TWOWORDINLINE(0x702F, 0xAAA3);
  610.  
  611. extern pascal OSErr MakeThumbnailFromPicture(PicHandle picture, short colorDepth, PicHandle thumbnail, ICMProgressProcRecordPtr progressProc)
  612.  TWOWORDINLINE(0x702A, 0xAAA3);
  613.  
  614. extern pascal OSErr MakeThumbnailFromPictureFile(short refNum, short colorDepth, PicHandle thumbnail, ICMProgressProcRecordPtr progressProc)
  615.  TWOWORDINLINE(0x702B, 0xAAA3);
  616.  
  617. extern pascal OSErr MakeThumbnailFromPixMap(PixMapHandle src, const Rect *srcRect, short colorDepth, PicHandle thumbnail, ICMProgressProcRecordPtr progressProc)
  618.  TWOWORDINLINE(0x702C, 0xAAA3);
  619.  
  620. extern pascal OSErr TrimImage(ImageDescriptionHandle desc, Ptr inData, long inBufferSize, ICMDataProcRecordPtr dataProc, Ptr outData, long outBufferSize, ICMFlushProcRecordPtr flushProc, Rect *trimRect, ICMProgressProcRecordPtr progressProc)
  621.  TWOWORDINLINE(0x702D, 0xAAA3);
  622.  
  623. extern pascal OSErr ConvertImage(ImageDescriptionHandle srcDD, Ptr srcData, short colorDepth, CTabHandle clut, CodecQ accuracy, CodecQ quality, CodecType cType, CodecComponent codec, ImageDescriptionHandle dstDD, Ptr dstData)
  624.  TWOWORDINLINE(0x7030, 0xAAA3);
  625.  
  626. extern pascal OSErr GetCompressedPixMapInfo(PixMapPtr pix, ImageDescriptionHandle *desc, Ptr *data, long *bufferSize, ICMDataProcRecord *dataProc, ICMProgressProcRecord *progressProc)
  627.  TWOWORDINLINE(0x7037, 0xAAA3);
  628.  
  629. extern pascal OSErr SetCompressedPixMapInfo(PixMapPtr pix, ImageDescriptionHandle desc, Ptr data, long bufferSize, ICMDataProcRecordPtr dataProc, ICMProgressProcRecordPtr progressProc)
  630.  TWOWORDINLINE(0x7038, 0xAAA3);
  631.  
  632. extern pascal void StdPix(PixMapPtr src, const Rect *srcRect, MatrixRecordPtr matrix, short mode, RgnHandle mask, PixMapPtr matte, const Rect *matteRect, short flags)
  633.  TWOWORDINLINE(0x700C, 0xAAA3);
  634.  
  635. extern pascal OSErr TransformRgn(MatrixRecordPtr matrix, RgnHandle rgn)
  636.  TWOWORDINLINE(0x7039, 0xAAA3);
  637.  
  638. #endif
  639. #if FOR_SYSTEM7_AND_SYSTEM8_DEPRECATED
  640. /*
  641. **********
  642.     preview stuff
  643. **********
  644. */
  645. extern pascal void SFGetFilePreview(Point where, ConstStr255Param prompt, FileFilterUPP fileFilter, short numTypes, ConstSFTypeListPtr typeList, DlgHookUPP dlgHook, SFReply *reply)
  646.  TWOWORDINLINE(0x7041, 0xAAA3);
  647.  
  648. extern pascal void SFPGetFilePreview(Point where, ConstStr255Param prompt, FileFilterUPP fileFilter, short numTypes, ConstSFTypeListPtr typeList, DlgHookUPP dlgHook, SFReply *reply, short dlgID, ModalFilterUPP filterProc)
  649.  TWOWORDINLINE(0x7042, 0xAAA3);
  650.  
  651. extern pascal void StandardGetFilePreview(FileFilterUPP fileFilter, short numTypes, ConstSFTypeListPtr typeList, StandardFileReply *reply)
  652.  TWOWORDINLINE(0x7043, 0xAAA3);
  653.  
  654. extern pascal void CustomGetFilePreview(FileFilterYDUPP fileFilter, short numTypes, ConstSFTypeListPtr typeList, StandardFileReply *reply, short dlgID, Point where, DlgHookYDUPP dlgHook, ModalFilterYDUPP filterProc, ActivationOrderListPtr activeList, ActivateYDUPP activateProc, void *yourDataPtr)
  655.  TWOWORDINLINE(0x7044, 0xAAA3);
  656.  
  657. #endif
  658. #if FOR_SYSTEM7_AND_SYSTEM8_COOPERATIVE
  659. extern pascal OSErr MakeFilePreview(short resRefNum, ICMProgressProcRecordPtr progress)
  660.  TWOWORDINLINE(0x7045, 0xAAA3);
  661.  
  662. extern pascal OSErr AddFilePreview(short resRefNum, OSType previewType, Handle previewData)
  663.  TWOWORDINLINE(0x7046, 0xAAA3);
  664.  
  665.  
  666. enum {
  667.     sfpItemPreviewAreaUser        = 11,
  668.     sfpItemPreviewStaticText    = 12,
  669.     sfpItemPreviewDividerUser    = 13,
  670.     sfpItemCreatePreviewButton    = 14,
  671.     sfpItemShowPreviewButton    = 15
  672. };
  673.  
  674. struct PreviewResourceRecord {
  675.     unsigned long                     modDate;
  676.     short                             version;
  677.     OSType                             resType;
  678.     short                             resID;
  679. };
  680. typedef struct PreviewResourceRecord PreviewResourceRecord;
  681.  
  682. typedef PreviewResourceRecord *PreviewResourcePtr;
  683. typedef PreviewResourcePtr *PreviewResource;
  684. extern pascal void AlignScreenRect(Rect *rp, ICMAlignmentProcRecordPtr alignmentProc)
  685.  FOURWORDINLINE(0x203C, 0x0008, 0x004C, 0xAAA3);
  686.  
  687. extern pascal void AlignWindow(WindowPtr wp, Boolean front, const Rect *alignmentRect, ICMAlignmentProcRecordPtr alignmentProc)
  688.  FOURWORDINLINE(0x203C, 0x000E, 0x004D, 0xAAA3);
  689.  
  690. extern pascal void DragAlignedWindow(WindowPtr wp, Point startPt, Rect *boundsRect, Rect *alignmentRect, ICMAlignmentProcRecordPtr alignmentProc)
  691.  FOURWORDINLINE(0x203C, 0x0014, 0x004E, 0xAAA3);
  692.  
  693. extern pascal long DragAlignedGrayRgn(RgnHandle theRgn, Point startPt, Rect *boundsRect, Rect *slopRect, short axis, UniversalProcPtr actionProc, Rect *alignmentRect, ICMAlignmentProcRecordPtr alignmentProc)
  694.  FOURWORDINLINE(0x203C, 0x001E, 0x004F, 0xAAA3);
  695.  
  696. extern pascal OSErr SetCSequenceDataRateParams(ImageSequence seqID, DataRateParamsPtr params)
  697.  FOURWORDINLINE(0x203C, 0x0008, 0x0050, 0xAAA3);
  698.  
  699. extern pascal OSErr SetCSequenceFrameNumber(ImageSequence seqID, long frameNumber)
  700.  FOURWORDINLINE(0x203C, 0x0008, 0x0051, 0xAAA3);
  701.  
  702. extern pascal QDErr NewImageGWorld(GWorldPtr *gworld, ImageDescriptionHandle idh, GWorldFlags flags)
  703.  FOURWORDINLINE(0x203C, 0x000C, 0x0052, 0xAAA3);
  704.  
  705. extern pascal OSErr GetCSequenceDataRateParams(ImageSequence seqID, DataRateParamsPtr params)
  706.  FOURWORDINLINE(0x203C, 0x0008, 0x0053, 0xAAA3);
  707.  
  708. extern pascal OSErr GetCSequenceFrameNumber(ImageSequence seqID, long *frameNumber)
  709.  FOURWORDINLINE(0x203C, 0x0008, 0x0054, 0xAAA3);
  710.  
  711. extern pascal OSErr GetBestDeviceRect(GDHandle *gdh, Rect *rp)
  712.  FOURWORDINLINE(0x203C, 0x0008, 0x0055, 0xAAA3);
  713.  
  714. extern pascal OSErr SetSequenceProgressProc(ImageSequence seqID, ICMProgressProcRecord *progressProc)
  715.  FOURWORDINLINE(0x203C, 0x0008, 0x0056, 0xAAA3);
  716.  
  717. extern pascal OSErr GDHasScale(GDHandle gdh, short depth, Fixed *scale)
  718.  FOURWORDINLINE(0x203C, 0x000A, 0x005A, 0xAAA3);
  719.  
  720. extern pascal OSErr GDGetScale(GDHandle gdh, Fixed *scale, short *flags)
  721.  FOURWORDINLINE(0x203C, 0x000C, 0x005B, 0xAAA3);
  722.  
  723. extern pascal OSErr GDSetScale(GDHandle gdh, Fixed scale, short flags)
  724.  FOURWORDINLINE(0x203C, 0x000A, 0x005C, 0xAAA3);
  725.  
  726. extern pascal OSErr ICMShieldSequenceCursor(ImageSequence seqID)
  727.  FOURWORDINLINE(0x203C, 0x0004, 0x0062, 0xAAA3);
  728.  
  729. extern pascal void ICMDecompressComplete(ImageSequence seqID, OSErr err, short flag, ICMCompletionProcRecordPtr completionRtn)
  730.  FOURWORDINLINE(0x203C, 0x000C, 0x0063, 0xAAA3);
  731.  
  732. extern pascal OSErr SetDSequenceTimeCode(ImageSequence seqID, void *timeCodeFormat, void *timeCodeTime)
  733.  FOURWORDINLINE(0x203C, 0x000C, 0x0064, 0xAAA3);
  734.  
  735. extern pascal OSErr CDSequenceNewMemory(ImageSequence seqID, Ptr *data, Size dataSize, long dataUse, ICMMemoryDisposedUPP memoryGoneProc, void *refCon)
  736.  FOURWORDINLINE(0x203C, 0x0018, 0x0066, 0xAAA3);
  737.  
  738. extern pascal OSErr CDSequenceDisposeMemory(ImageSequence seqID, Ptr data)
  739.  FOURWORDINLINE(0x203C, 0x0008, 0x0067, 0xAAA3);
  740.  
  741. extern pascal OSErr CDSequenceNewDataSource(ImageSequence seqID, ImageSequenceDataSource *sourceID, OSType sourceType, long sourceInputNumber, Handle dataDescription, void *transferProc, void *refCon)
  742.  FOURWORDINLINE(0x203C, 0x001C, 0x0068, 0xAAA3);
  743.  
  744. extern pascal OSErr CDSequenceDisposeDataSource(ImageSequenceDataSource sourceID)
  745.  FOURWORDINLINE(0x203C, 0x0004, 0x0069, 0xAAA3);
  746.  
  747. extern pascal OSErr CDSequenceSetSourceData(ImageSequenceDataSource sourceID, void *data)
  748.  FOURWORDINLINE(0x203C, 0x0008, 0x006A, 0xAAA3);
  749.  
  750. extern pascal OSErr CDSequenceChangedSourceData(ImageSequenceDataSource sourceID)
  751.  FOURWORDINLINE(0x203C, 0x0004, 0x006B, 0xAAA3);
  752.  
  753. extern pascal OSErr PtInDSequenceData(ImageSequence seqID, void *data, Size dataSize, Point where, Boolean *hit)
  754.  FOURWORDINLINE(0x203C, 0x0014, 0x006C, 0xAAA3);
  755.  
  756.  
  757. enum {
  758.     identityMatrixType            = 0x00,                            /* result if matrix is identity */
  759.     translateMatrixType            = 0x01,                            /* result if matrix translates */
  760.     scaleMatrixType                = 0x02,                            /* result if matrix scales */
  761.     scaleTranslateMatrixType    = 0x03,                            /* result if matrix scales and translates */
  762.     linearMatrixType            = 0x04,                            /* result if matrix is general 2 x 2 */
  763.     linearTranslateMatrixType    = 0x05,                            /* result if matrix is general 2 x 2 and translates */
  764.     perspectiveMatrixType        = 0x06                            /* result if matrix is general 3 x 3 */
  765. };
  766.  
  767. typedef unsigned short MatrixFlags;
  768. extern pascal short GetMatrixType(const MatrixRecord *m)
  769.  TWOWORDINLINE(0x7014, 0xABC2);
  770.  
  771. extern pascal void CopyMatrix(const MatrixRecord *m1, MatrixRecord *m2)
  772.  TWOWORDINLINE(0x7020, 0xABC2);
  773.  
  774. extern pascal Boolean EqualMatrix(const MatrixRecord *m1, const MatrixRecord *m2)
  775.  TWOWORDINLINE(0x7021, 0xABC2);
  776.  
  777. extern pascal void SetIdentityMatrix(MatrixRecord *matrix)
  778.  TWOWORDINLINE(0x7015, 0xABC2);
  779.  
  780. extern pascal void TranslateMatrix(MatrixRecord *m, Fixed deltaH, Fixed deltaV)
  781.  TWOWORDINLINE(0x7019, 0xABC2);
  782.  
  783. extern pascal void RotateMatrix(MatrixRecord *m, Fixed degrees, Fixed aboutX, Fixed aboutY)
  784.  TWOWORDINLINE(0x7016, 0xABC2);
  785.  
  786. extern pascal void ScaleMatrix(MatrixRecord *m, Fixed scaleX, Fixed scaleY, Fixed aboutX, Fixed aboutY)
  787.  TWOWORDINLINE(0x7017, 0xABC2);
  788.  
  789. extern pascal void SkewMatrix(MatrixRecord *m, Fixed skewX, Fixed skewY, Fixed aboutX, Fixed aboutY)
  790.  TWOWORDINLINE(0x7018, 0xABC2);
  791.  
  792. extern pascal OSErr TransformFixedPoints(const MatrixRecord *m, FixedPoint *fpt, long count)
  793.  TWOWORDINLINE(0x7022, 0xABC2);
  794.  
  795. extern pascal OSErr TransformPoints(const MatrixRecord *mp, Point *pt1, long count)
  796.  TWOWORDINLINE(0x7023, 0xABC2);
  797.  
  798. extern pascal Boolean TransformFixedRect(const MatrixRecord *m, FixedRect *fr, FixedPoint *fpp)
  799.  TWOWORDINLINE(0x7024, 0xABC2);
  800.  
  801. extern pascal Boolean TransformRect(const MatrixRecord *m, Rect *r, FixedPoint *fpp)
  802.  TWOWORDINLINE(0x7025, 0xABC2);
  803.  
  804. extern pascal Boolean InverseMatrix(const MatrixRecord *m, MatrixRecord *im)
  805.  TWOWORDINLINE(0x701C, 0xABC2);
  806.  
  807. extern pascal void ConcatMatrix(const MatrixRecord *a, MatrixRecord *b)
  808.  TWOWORDINLINE(0x701B, 0xABC2);
  809.  
  810. extern pascal void RectMatrix(MatrixRecord *matrix, const Rect *srcRect, const Rect *dstRect)
  811.  TWOWORDINLINE(0x701E, 0xABC2);
  812.  
  813. extern pascal void MapMatrix(MatrixRecord *matrix, const Rect *fromRect, const Rect *toRect)
  814.  TWOWORDINLINE(0x701D, 0xABC2);
  815.  
  816. #endif
  817.  
  818. #if PRAGMA_ALIGN_SUPPORTED
  819. #pragma options align=reset
  820. #endif
  821.  
  822. #if PRAGMA_IMPORT_SUPPORTED
  823. #pragma import off
  824. #endif
  825.  
  826. #ifdef __cplusplus
  827. }
  828. #endif
  829.  
  830. #endif /* __IMAGECOMPRESSION__ */
  831.  
  832.